openapi: 3.0.0 info: title: DIX API specification description: The api for DIX 1.2 version: 0.6.2 servers: - url: https://dixapitest.fvst.dk/ description: DIX API test server - external API gateway - url: https://dixapi.fvst.dk/ description: DIX API prod server - external API gateway tags: - name: ApiKeyAuthorization description: endpoints for authorization paths: /api/create: post: tags: - Create summary: >- Funktionen til at oprette eller ændre en certifikatanmodning. Certifikatanmodningen oprettes som kladde og valgfrit indsendes til behandling i samme kald. parameters: - name: x-login-cvr description: Indsenders CVR nummer. in: header required: true style: simple explode: true schema: type: number requestBody: content: application/json: schema: $ref: '#/components/schemas/CreateRequest' responses: '200': description: Returnerer anmodningens id hvis der kan oprettes en kladde content: application/json: schema: $ref: '#/components/schemas/CreateSubmitResponse' example: anmodningsId: 'A-2023-001302' status: 'draft' '400': description: Fejlkode hvis ID er medsendt ikke er gyldig (kritisk fejl) content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: statusCode: 400 error: >- bad request message: Anmodnings ID er ikke gyldig. '401': description: >- Fejlkode hvis API nøgle og Indsenders CVR nummer ikke stemmer overens, hvis KOR ID eller CVR numre (eller kombinationen af disse) ikke er gyldig, eller hvis indsender ikke har en gældende fuldmagt for anmoder (kritisk fejl) content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: statusCode: 401 error: >- unauthorized message: >- CVR nummer er ikke kendt i DIX '403': description: >- Fejlkode hvis anmodningens data ikke er i overensstemmelse med DIX Master schema (kritisk fejl) content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: statusCode: 403 error: >- forbidden message: >- Anmodningens data matcher ikke DIX Master Schema '404': description: >- Fejlkode hvis ID er medsendt men anmodningen som ID peger på ikke har status kladde (Kritisk fejl) content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: statusCode: 404 error: >- not found message: the requested resource could not be found '409': description: >- Fejlkode hvis anmodningens model ikke længere er gyldig (status historisk, ellermangler) (Kritisk fejl) content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: statusCode: 409 error: >- conflict message: >- the request could not be processed '410': description: Fejlkode hvis anmodningens model er erstattet eller blokeret content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: statusCode: 410 error: >- gone message: >- the resource requested was previously in use but is no longer available '412': description: Fejlkode hvis modellen kræver valg af land eller kategori. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: statusCode: 412 error: >- Precondition Failed message: >- DIX Certificate can be used for more than one country or category, but none was supplied in the call. Please provide category code and country ISO Code. '413': description: Fejlkode hvis vedhæftninger er for store eller ikke i PDF format content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: statusCode: 413 error: >- payload too large message: >- the request is larger than the server is willing or able to process /api/submit: post: tags: - Submit summary: >- Oprette en sag til sagsbehandling i BPM for anmodningen med status kladde, og skifter status på anmodningen til indsendt. parameters: - name: x-login-cvr description: Indsenders CVR nummer. in: header required: true style: simple explode: true schema: type: number requestBody: content: application/json: schema: $ref: '#/components/schemas/SubmitRequest' responses: '200': description: Status OK hvis indsendelse af anmodningen kunne startes content: application/json: schema: $ref: '#/components/schemas/CreateSubmitResponse' example: anmodningsId: 'A-2023-001302' status: 'submitted' '400': description: Fejlkode hvis anmodningen ikke har status kladde (kritisk fejl) content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: statusCode: 400 error: >- bad request message: >- the request could not be found '401': description: >- Fejlkode hvis API nøgle og Indsenders CVR nummer ikke stemmer overens, hvis KOR ID eller CVR numre for anmoder (eller kombinationen af disse) ikke er gyldig, hvis KOR ID og/eller CVR nummer for anmoder ikke passer med anmodning, eller hvis indsender ikke har en gældende fuldmagt for anmoder (kritisk fejl) content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: statusCode: 401 error: >- unauthorized message: >- could not identify provided information '403': description: >- Fejlkode hvis KOR ID eller CVR numre ikke stemmer med anmodningens data (kritisk fejl) content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: statusCode: 403 error: >- forbidden message: >- the request could be found but does not match '406': description: Fejlkode hvis der medsendes data i kaldet (kritisk fejl) content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: statusCode: 406 error: >- not acceptable message: >- the request resource could not be accepted '409': description: >- Fejlkode hvis anmodningens model ikke længere er gyldig (status historisk, blokeret eller erstattet) (Kritisk fejl) content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: statusCode: 409 error: >- conflict message: >- the request could not be processed '422': description: >- Fejlkode hvis en anmodning, som er oprettet eller sidst rettet fra anmodermodulet, forsøges indsendt gennem API. (Kritisk fejl) content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: statusCode: 422 error: >- Unprocessable Content message: >- Anmodningen kan ikke indsendes gennem API. Anmodningen er sidst rettet gennem anmodermodulet, og skal derfor indsendes gennem anmodermodulet (Kritisk fejl) '424': description: >- Fejlkode hvis sagsbehandlingsmodulet afviser anmodningen, f.eks. hvis genkørsel af kontroller gør anmodningen ugyldig eller oprettelsen fejler i sagsbehandlingsmodulet. (Kritisk fejl) content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: statusCode: 424 error: >- Failed Dependency message: >- Anmodningen er afvist af sagsbehandlermodulet '503': description: >- Fejlkode hvis sagsbehandlingsmodulet ikke er tilgængeligt, så sagsbehandlingen ikke kan startes. (Kritisk fejl) content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: statusCode: 503 error: >- Services unavailable message: >- Sagsbehandlingsmodulet er ikke til tilgængeligt - indsendelsen er ikke gennemført. /api/getStatus/{anmodningsId}: get: tags: - GetStatus summary: >- Henter seneste status og eventuelle fejlbeskeder og/eller advarsler for en anmodning (kladde eller indsendt) parameters: - name: x-login-cvr description: Indsenders CVR nummer. in: header required: true style: simple explode: true schema: type: number - name: anmodningsId in: path required: true style: simple explode: true schema: type: string responses: '200': description: >- Aktuelle status, returkode og seneste liste med fejlbeskeder og/eller advarsler content: application/json: schema: $ref: '#/components/schemas/getStatusResponse' example: { status: "draft", numberOfErrors: 1, numberOfWarnings: 1, validationErrors: [ { id: 12, severity: Error, uniqueRef: ConsignmentDateOfLoadingEnd, message: Sluttidspunkt er obligatorisk }, { id: 13, severity: Warn, uniqueRef: ConsignmentPackagingDate, message: 'Feltet findes ikke i modellen, data er ikke overført' } ] } '401': description: >- Fejlkode hvis API nøgle og Indsenders CVR nummer ikke stemmer overens, eller hvis indsender ikke har en gældende fuldmagt for anmoder (kritisk fejl) content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: statusCode: 401 error: >- unauthorized message: >- could not identify provided information '406': description: Fejlkode hvis der medsendes data i kaldet (Kritisk fejl) content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: statusCode: 406 error: >- not acceptable message: >- the request resource could not be accepted /api/getModelStatus/{modelNo}: get: tags: - GetModelStatus summary: >- Returnerer modellens status, og eventuelt seneste modelNo hvis modellen er erstattet parameters: - name: x-login-cvr description: Indsenders CVR nummer. in: header required: true style: simple explode: true schema: type: number - name: modelNo in: path required: true style: simple explode: true schema: type: string responses: '200': description: Aktuelle status for certifikatmodel content: application/json: schema: $ref: '#/components/schemas/getModelStatusResponse' example: modelNo: DIX-2023-10123 status: erstattet replacementModelNo: DIX-2023-10296 '400': description: Fejlkode hvis API nøgle ikke er gyldig (Kritisk fejl) content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: statusCode: 400 error: >- bad request message: >- the server cannot process the request '401': description: >- Fejlkode hvis API nøgle og Indsenders CVR nummer ikke stemmer overens (kritisk fejl) content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: statusCode: 401 error: >- unauthorized message: >- could not identify provided information '404': description: Fejlkode hvis modelNo ikke er kendt (Kritisk fejl) content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: statusCode: 404 error: >- not found message: >- the request could not be found security: - ApiKeyAuth: [] components: securitySchemes: ApiKeyAuth: type: apiKey in: header name: x-api-key schemas: ErrorResponse: type: object description: 'Returneres ved kritisk fejl.' properties: statusCode: type: integer description: 'HTTP Fejlkode' error: type: string description: 'HTTP fejltekst' message: type: string description: 'DIX fejlbesked med detaljer om fejlen.' CreateRequest: type: object properties: cvrNumber: type: string description: 'CVR nummer for anmoder' korId: type: string description: "KOR ID for anmoder. Kan findes i DIX anmodermodulet. Det er muligt at downloade liste med KOR ID'er fra anmodermodulet." submit: type: boolean description: 'Om certifikatanmodningen skal indsendes med det samme (true) eller oprettes som kladde (false)' anmodningsId: type: string description: 'Bruges ved opdatering af eksisterende kladde. Skal være tom ved oprettelse af ny certifikatanmodning.' modelNo: type: string description: 'Bruges til at identificere den model som anmodningens data skal bruge. Er obligatorisk ved oprettelse af ny certifikatanmodning.' category: type: string description: 'Modellens kategori - skal udfyldes hvis en model kan bruges til flere forskellige kategorier. Mulige værdier findes ved at søge efter modellen i anmodermodulet.' country: type: string description: 'Land som anmodningen skal bruges med - skal være det samme land som modellen angiver i anmodermodulet. Skal udfyldes hvis der er flere mulige lande for en model' data: type: object properties: {} description: 'Anmodningens data i overensstemmelse med DIX Master JSON Schema. Master Schema downloades fra DIX anmodermodulet.' required: - cvrNumber - korId - submit - refNo - data CreateSubmitResponse: type: object properties: anmodningsId: type: string description: 'Anmodnings ID som vist i anmodermodulet' status: type: string description: 'Status på anmodningen efter kaldet. draft betyder at anmodningen har status kladde, submitted at anmodningen er indsendt.' required: - anmodningsId SubmitRequest: type: object properties: cvrNumber: type: string description: 'CVR nummer for anmoder' korId: type: string description: "KOR ID for anmoder. Kan findes i DIX anmodermodulet. Det er muligt at downloade liste med KOR ID'er fra anmodermodulet." anmodningsId: type: string description: 'Anmodningens identifikation, som returneret fra /api/create, eller fundet i DIX anmodermodulet.' required: - cvrNumber - korId - anmodningsId getModelStatusResponse: type: object description: 'Status på en DIX certifikatmodel.' properties: modelNo: type: string description: 'Certifikatmodel som der spørges på' status: type: string enum: - aktiv - historisk - blokeret - erstattet description: 'Status på modellen' replacementModelNo: type: string description: "Certifikatmodel som skal bruges i stedet ved status 'erstattet'. Tom hvis modellens status ikke er 'erstattet'" required: - modelNo - status getStatusResponse: type: object description: 'Response objekt for getStatus' properties: status: type: string description: "Status på anmodningen - draft, submitted, osv." numberOfErrors: type: integer description: "Antallet af fejl i listen." numberOfWarnings: type: integer description: "Antallet af advarsler i listen." validationErrors: type: array description: "Liste med fejl og advarsler" items: type: object properties: id: type: integer description: 'Fejlens eller advarslens identifikation' severity: type: string enum: - Info - Warn - Error description: 'Error vil blokere for indsendelse, Info og Warn vil tillade indsendelse.' code: type: string description: 'fejlkode - kan være tom' uniqueRef: type: string description: 'Feltkode i anmodningen som beskeden vedrører' message: type: string description: 'Fejlbesked' required: [id, severity, message]